/**
 * Author@ Cheng Feitian
 * Date: 2020-3-23
 * Description: 封装的意义
 * - 将属性和行为作为一个整体，表现生活中的事物
 * - 将属性和行为加以权限控制
 */

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;
const int maxn = 1024;

#define PI 3.1415926

/**
 * @brief 设计一个圆类，计算圆的周长
 * 圆求周长的公式：2 * PI * 半径;
 */

class Circle
{
    //访问权限
    //公共权限
public:
    //属性
    int m_R;    //radius
    //行为
    //获取圆的周长
    double calculateZC(){
        return 2 * PI * m_R;
    }
};

class Student{
public:
    //类中的属性和行为 我们统一称为 成员
    //属性  成员属性 成员变量
    //行为  成员函数 成员方法


    //学生属性
    string m_Name;
    string m_ID;

    //学生行为
    //给姓名学号赋值
    void setName(string name){
        m_Name = name;
    }

    void setID(string ID){
        m_ID = ID;
    }

    bool showInfo(){
        cout << "学生姓名：" << m_Name << endl
             << "学生学号：" << m_ID << endl;
        return true;
    }
};

int main() {

    //通过圆类 创建具体的圆(对象)
    //实例化 (通过一个类 创建一个对象的过程)
    Circle c1;

    //给圆对象的属性赋值
    c1.m_R = 10;

    cout << "圆的周长为：" << c1.calculateZC() << endl;

    Student s1;

    s1.setName("张三");
    s1.setID("101010101010");

    s1.showInfo();

    return 0;
}
